Type Constraints এবং Generic Functions

Mobile App Development - কটলিন (Kotlin) - Kotlin এর Generics এবং Variance
234

Type Constraints এবং Generic Functions

কটলিনের Type Constraints এবং Generic Functions আপনাকে টাইপ নিরাপত্তা বজায় রেখে ফাংশন এবং ক্লাস তৈরি করতে সক্ষম করে। Type Constraints ব্যবহার করে আপনি Generic Types এর উপর নিয়ন্ত্রণ পেতে পারেন, যা নিশ্চিত করে যে একটি নির্দিষ্ট টাইপের অবজেক্ট কেবল নির্দিষ্ট শর্তে ব্যবহার করা হবে। নিচে Type Constraints এবং Generic Functions নিয়ে বিস্তারিত আলোচনা করা হলো:


১. Type Constraints

Type Constraints আপনাকে টাইপ প্যারামিটারগুলির উপর শর্ত আরোপ করতে দেয়। আপনি একটি Generic ক্লাস বা ফাংশনে where ক্লজ ব্যবহার করে টাইপের উপর নিয়ন্ত্রণ আরোপ করতে পারেন।

i) Type Constraint Syntax

fun <T> functionName(param: T) where T : SomeClass

ii) উদাহরণ

Type Constraints সহ Generic Function:

open class Animal {
    fun makeSound() = "Some sound"
}

class Dog : Animal() {
    fun fetch() = "Fetching..."
}

fun <T> callAnimalSound(animal: T) where T : Animal {
    println(animal.makeSound())
}

fun main() {
    val dog = Dog()
    callAnimalSound(dog) // আউটপুট: Some sound
}

ব্যাখ্যা:

  • এখানে callAnimalSound একটি Generic Function যা T টাইপ প্যারামিটার গ্রহণ করে। where T : Animal দিয়ে টাইপের উপর শর্ত আরোপ করা হয়েছে, যাতে কেবল Animal বা তার সাবক্লাস ব্যবহার করা যায়।

২. Generic Functions

Generic Functions হলো এমন ফাংশন যা একটি বা একাধিক টাইপ প্যারামিটার গ্রহণ করে। এটি কোড পুনঃব্যবহারযোগ্যতা বাড়াতে এবং টাইপ নিরাপত্তা নিশ্চিত করতে সাহায্য করে।

i) Generic Function Syntax

fun <T> functionName(param: T): ReturnType {
    // Function body
}

ii) উদাহরণ

একটি Generic Function:

fun <T> printList(items: List<T>) {
    for (item in items) {
        println(item)
    }
}

fun main() {
    val intList = listOf(1, 2, 3)
    val stringList = listOf("Kotlin", "Java", "Python")
    
    printList(intList) // আউটপুট: 1 2 3
    printList(stringList) // আউটপুট: Kotlin Java Python
}

ব্যাখ্যা:

  • এখানে printList একটি Generic Function যা List<T> গ্রহণ করে এবং প্রতিটি আইটেম প্রিন্ট করে। এটি যে কোন টাইপের List প্রক্রিয়া করতে সক্ষম।

৩. Multiple Type Constraints

আপনি একাধিক টাইপ কনস্ট্রেইন্টও যুক্ত করতে পারেন। এটি where ক্লজের মাধ্যমে করা হয়।

i) উদাহরণ

interface Comparable<T> {
    fun compareTo(other: T): Int
}

fun <T> sortList(items: List<T>) where T : Comparable<T> {
    // Sorting logic (for example purpose, just printing)
    println("Sorting list of items")
}

fun main() {
    // sortList(listOf(1, 2, 3)) // This would work if we had implemented sorting
}

ব্যাখ্যা:

  • এখানে sortList ফাংশনে টাইপ প্যারামিটার T এর উপর Comparable<T> টাইপ কনস্ট্রেইন্ট প্রয়োগ করা হয়েছে, যাতে T অবশ্যই Comparable ইন্টারফেসের একটি বাস্তবায়ন হতে হবে।

৪. Generic Classes with Constraints

আপনি Generic ক্লাসেও Type Constraints ব্যবহার করতে পারেন।

i) উদাহরণ

class Box<T>(val item: T) where T : Comparable<T> {
    fun isGreaterThan(other: T): Boolean {
        return item > other
    }
}

fun main() {
    val box1 = Box(5)
    val box2 = Box(3)
    println(box1.isGreaterThan(box2.item)) // আউটপুট: true
}

ব্যাখ্যা:

  • এখানে Box একটি Generic ক্লাস যা T টাইপ প্যারামিটার গ্রহণ করে এবং where T : Comparable<T> কনস্ট্রেইন্ট ব্যবহার করেছে, যাতে T অবশ্যই Comparable হতে হবে।

উপসংহার

কটলিনের Type Constraints এবং Generic Functions আপনাকে টাইপ নিরাপত্তা বজায় রেখে ক্লাস এবং ফাংশন তৈরি করার ক্ষমতা প্রদান করে। Type Constraints ব্যবহার করে আপনি নির্দিষ্ট টাইপের উপর নিয়ন্ত্রণ আরোপ করতে পারেন, এবং Generic Functions কোডের পুনঃব্যবহারযোগ্যতা এবং কার্যকারিতা বাড়ায়।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...